package com.dmall.sort.algorithm;

import java.util.PriorityQueue;

/**
 * 简易版的堆排序
 * 依赖了jdk提供的优先队列 PriorityQueue
 * jdk提供的 PriorityQueue 是一个小顶堆
 * @author xiao1.wang
 * @date 2021/10/10 23:21
 */
public class SimpleHeapSort implements Sort {

    @Override
    public void sort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(arr.length);
        for (int i = 0; i < arr.length; i++) {
            priorityQueue.add(arr[i]);
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i] = priorityQueue.remove();
        }
    }

    @Override
    public String getName() {
        return "简易版堆排序";
    }

    public static void main(String[] args) {
        int[] arr = {6, 9, 4, 7, 2, 8, 3, 1, 10, 5};
        Sort.printArr(arr);
        Sort sort = new SimpleHeapSort();
        sort.sort(arr);
        Sort.printArr(arr);
    }
}
